package com.nageoffer.shortlink.project.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nageoffer.shortlink.project.dao.entity.LinkLocaleStatsDO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkGroupStatsReqDTO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkStatsReqDTO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/***
 * 地区统计访问持久层
 */
@Mapper
public interface LinkLocaleStatsMapper extends BaseMapper<LinkLocaleStatsDO> {


    /**
     * 记录地区访问监控数据
     *
     * @param linkLocaleStatsDO
     */
    @Insert("""
                INSERT INTO t_link_locale_stats (
                    full_short_url,
                    date,
                    cnt,
                    province,
                    city,
                    adcode,
                    country,
                    create_time,
                    update_time,
                    del_flag
                ) VALUES (
                    #{linkLocaleStats.fullShortUrl},
                    #{linkLocaleStats.date},
                    #{linkLocaleStats.cnt},
                    #{linkLocaleStats.province},
                    #{linkLocaleStats.city},
                    #{linkLocaleStats.adcode},
                    #{linkLocaleStats.country},
                    NOW(),
                    NOW(),
                    0
                ) ON DUPLICATE KEY UPDATE
                    cnt = cnt + #{linkLocaleStats.cnt},
                    update_time = NOW()
            """)
    void linkLocaleStats(@Param("linkLocaleStats") LinkLocaleStatsDO linkLocaleStatsDO);


    /**
     * 根据短链接获取指定日期内地区监控数据
     */
    List<LinkLocaleStatsDO> listLocaleByShortLink(@Param("param") ShortLinkStatsReqDTO requestParam);

    /**
     * 根据分组获取指定日期内地区监控数据
     *
     * @param requestParam
     * @return
     */
    List<LinkLocaleStatsDO> listLocaleByGroup(@Param("param") ShortLinkGroupStatsReqDTO requestParam);
}
